home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / AMT / Moonbase Engine / Moonbase Engine 1.2 / Moonbase Engine Sources / keyMoonbase / Engine / MoonbaseSenderModels.k < prev   
Encoding:
Text File  |  1996-02-22  |  12.6 KB  |  673 lines  |  [TEXT/MPS ]

  1. --
  2. --    File: MoonbaseSenderModels.k
  3. --    Project: Moonbase Engine
  4. --    Copyright: (c) 1996 Moonbase Enterprises Pty Ltd (ACN 072 298 554)
  5. --
  6.  
  7. class cMoonbaseSenderDummy 
  8. is 
  9.     cSenderModel;
  10. has
  11.     
  12.     Change()
  13.         do
  14.         end;
  15.     
  16.     GetDialog()
  17.         do
  18.         end;
  19.     
  20.     GetFamily()
  21.         do
  22.             result := oMoonbaseSenderFamily;
  23.         end;
  24.     
  25.     GetParameter()
  26.         do
  27.             result := "";
  28.         end;
  29.     
  30.     Read(theAtomizer)
  31.         do
  32.         end;
  33.     
  34.     Weigh(theAtomizer)
  35.         do
  36.         end;
  37.     
  38.     Write(theAtomizer)
  39.         do
  40.         end;
  41.     
  42. end;
  43.  
  44. --
  45. --    Moonbase senders appear in the Apple Media Tool Action
  46. --    menu as Add Moonbase and are also available via COMMAND-3.
  47. --    For my requirements I have bundled both the Command
  48. --    and Link type senders into the one Moonbase sender.
  49. --    This does not cause any problems as each sender takes
  50. --    care of its own parameters (unlike Effect senders).
  51. --
  52.  
  53. object oMoonbaseSenderFamily is cSenderFamily
  54. with
  55.     ID is 5300;
  56.     Tag is 'MOON';
  57. end;
  58.  
  59. --
  60. --    5390    Scroll by sender
  61. --
  62. --                Picture handler
  63. --                Picture Scroller handler
  64. --                Text handler
  65. --                Text Scroller handler
  66. --
  67.  
  68. object oScrollBySenderModel is cMoonbaseSenderDummy
  69. has
  70.     X; Y;
  71.     
  72.     Change()
  73.         do
  74.             self.X := oScrollBySenderDialog.X;
  75.             self.Y := oScrollBySenderDialog.Y;
  76.         end;
  77.     
  78.     Execute(theTarget)
  79.         do
  80.             theTarget.ScrollBy(-(self.X), -(self.Y));
  81.         end;
  82.     
  83.     GetDialog(theTarget)
  84.         do
  85.             oScrollBySenderDialog.X := self.X;
  86.             oScrollBySenderDialog.Y := self.Y;
  87.             result := oScrollBySenderDialog;
  88.         end;
  89.     
  90.     GetEntry()
  91.         do
  92.             result := oScrollBySenderEntry;
  93.         end;
  94.     
  95.     GetParameter()
  96.         do
  97.             result := " " + self.X.ToString() + " " + self.Y.ToString();
  98.         end;
  99.     
  100.     Read(theAtomizer)
  101.         external "oScrollBySenderModelRead";
  102.     
  103.     SaveAsText(theStreamer, theIdentifier)
  104.         do
  105.             theStreamer.Echo(theIdentifier, ".ScrollBy(-(", self.X.ToString(), "), -(", self.Y.ToString(), ")); -- Moonbase Scroll by");
  106.         end;
  107.     
  108.     Weigh(theAtomizer)
  109.         external "oScrollBySenderModelWeigh";
  110.     
  111.     Write(theAtomizer)
  112.         external "oScrollBySenderModelWrite";
  113.     
  114. with
  115.     X is 0;
  116.     Y is 0;
  117. end;
  118.  
  119. object oScrollBySenderEntry is cSenderEntry
  120. with
  121.     ID is 5390;
  122.     Tag is 'SCBY';
  123. end;
  124.  
  125. object oScrollBySenderDialog is cAMTDialog
  126. has
  127.     X; Y;
  128. with
  129.     ID is 5390;
  130.     Items is [
  131.         cAMTTextLabel with end,
  132.         cAMTIntegerField with Field is X; Range is [-16384, 16384]; Tag is 'PX  '; end,
  133.         cAMTTextLabel with end,
  134.         cAMTTextLabel with end,
  135.         cAMTIntegerField with Field is Y; Range is [-16384, 16384]; Tag is 'PY  '; end,
  136.         cAMTTextLabel with end
  137.     ];
  138.     X is 0;
  139.     Y is 0;
  140. end;
  141.  
  142. --
  143. --    5391    Scroll to sender
  144. --
  145. --                Picture handler
  146. --                Picture Scroller handler
  147. --                Text handler
  148. --                Text Scroller handler
  149. --
  150.  
  151. object oScrollToSenderModel is cMoonbaseSenderDummy
  152. has
  153.     X; Y;
  154.     
  155.     Change()
  156.         do
  157.             self.X := oScrollToSenderDialog.X;
  158.             self.Y := oScrollToSenderDialog.Y;
  159.         end;
  160.     
  161.     Execute(theTarget)
  162.         do
  163.             theTarget.ScrollBy(-(self.X) - theTarget.ScrollX, -(self.Y) - theTarget.ScrollY);
  164.         end;
  165.     
  166.     GetDialog(theTarget)
  167.         do
  168.             oScrollToSenderDialog.X := self.X;
  169.             oScrollToSenderDialog.Y := self.Y;
  170.             result := oScrollToSenderDialog;
  171.         end;
  172.     
  173.     GetEntry()
  174.         do
  175.             result := oScrollToSenderEntry;
  176.         end;
  177.     
  178.     GetParameter()
  179.         do
  180.             result := " " + self.X.ToString() + " " + self.Y.ToString();
  181.         end;
  182.     
  183.     Read(theAtomizer)
  184.         external "oScrollToSenderModelRead";
  185.     
  186.     SaveAsText(theStreamer, theIdentifier)
  187.         do
  188.             theStreamer.Echo(theIdentifier, ".ScrollBy(-(", self.X.ToString(), ") - ", theIdentifier, ".ScrollX, -(", self.Y.ToString(), ") - ", theIdentifier, ".ScrollY); -- Moonbase Scroll to");
  189.         end;
  190.     
  191.     Weigh(theAtomizer)
  192.         external "oScrollToSenderModelWeigh";
  193.     
  194.     Write(theAtomizer)
  195.         external "oScrollToSenderModelWrite";
  196.     
  197. with
  198.     X is 0;
  199.     Y is 0;
  200. end;
  201.  
  202. object oScrollToSenderEntry is cSenderEntry
  203. with
  204.     ID is 5391;
  205.     Tag is 'SCTO';
  206. end;
  207.  
  208. object oScrollToSenderDialog is cAMTDialog
  209. has
  210.     X; Y;
  211. with
  212.     ID is 5391;
  213.     Items is [
  214.         cAMTTextLabel with end,
  215.         cAMTIntegerField with Field is X; Range is [-16384, 16384]; Tag is 'PX  '; end,
  216.         cAMTTextLabel with end,
  217.         cAMTTextLabel with end,
  218.         cAMTIntegerField with Field is Y; Range is [-16384, 16384]; Tag is 'PY  '; end,
  219.         cAMTTextLabel with end
  220.     ];
  221.     X is 0;
  222.     Y is 0;
  223. end;
  224.  
  225. --
  226. --    5392    Scroll to Cell sender
  227. --
  228. --                Picture handler
  229. --                Picture Scroller handler
  230. --                Text handler
  231. --                Text Scroller handler
  232. --
  233.  
  234. object oScrollToCellSenderModel is cMoonbaseSenderDummy
  235. has
  236.     X; Y;
  237.     
  238.     Change()
  239.         do
  240.             self.X := oScrollToCellSenderDialog.X;
  241.             self.Y := oScrollToCellSenderDialog.Y;
  242.         end;
  243.     
  244.     Execute(theTarget)
  245.         do
  246.             theTarget.ScrollBy(-(self.X * theTarget.Width) - theTarget.ScrollX, -(self.Y * theTarget.Height) - theTarget.ScrollY);
  247.         end;
  248.     
  249.     GetDialog(theTarget)
  250.         do
  251.             oScrollToCellSenderDialog.X := self.X;
  252.             oScrollToCellSenderDialog.Y := self.Y;
  253.             result := oScrollToCellSenderDialog;
  254.         end;
  255.     
  256.     GetEntry()
  257.         do
  258.             result := oScrollToCellSenderEntry;
  259.         end;
  260.     
  261.     GetParameter()
  262.         do
  263.             result := " " + self.X.ToString() + " " + self.Y.ToString();
  264.         end;
  265.     
  266.     Read(theAtomizer)
  267.         external "oScrollToCellSenderModelRead";
  268.     
  269.     SaveAsText(theStreamer, theIdentifier)
  270.         do
  271.             --
  272.             -- I split the output into two lines and indent the second line using two
  273.             -- inline tab characters. Using theStreamer.Return(2) messes up the formatting.
  274.             --
  275.             theStreamer.Echo(theIdentifier, ".ScrollBy(-(", self.X.ToString(), " * ", theIdentifier, ".Width) - ", theIdentifier, ".ScrollX, ");
  276.             theStreamer.Return(0);
  277.             theStreamer.Echo("\$09\$09-(", self.Y.ToString(), " * ", theIdentifier, ".Height) - ", theIdentifier, ".ScrollY); -- Scroll to Cell");
  278.         end;
  279.     
  280.     Weigh(theAtomizer)
  281.         external "oScrollToCellSenderModelWeigh";
  282.     
  283.     Write(theAtomizer)
  284.         external "oScrollToCellSenderModelWrite";
  285.     
  286. with
  287.     X is 0;
  288.     Y is 0;
  289. end;
  290.  
  291. object oScrollToCellSenderEntry is cSenderEntry
  292. with
  293.     ID is 5392;
  294.     Tag is 'SCTC';
  295. end;
  296.  
  297. object oScrollToCellSenderDialog is cAMTDialog
  298. has
  299.     X; Y;
  300. with
  301.     ID is 5392;
  302.     Items is [
  303.         cAMTTextLabel with end,
  304.         cAMTIntegerField with Field is X; Range is [-16384, 16384]; Tag is 'PX  '; end,
  305.         cAMTTextLabel with end,
  306.         cAMTTextLabel with end,
  307.         cAMTIntegerField with Field is Y; Range is [-16384, 16384]; Tag is 'PY  '; end,
  308.         cAMTTextLabel with end
  309.     ];
  310.     X is 0;
  311.     Y is 0;
  312. end;
  313.  
  314. --
  315. --    5393    Set Duration sender
  316. --
  317. --                Empty handler
  318. --                Color handler
  319. --                Picture handler
  320. --                Picture Scroller handler
  321. --                Text handler
  322. --                Text Scroller handler
  323. --                Field handler
  324. --
  325.  
  326. object oSetDurationSenderModel is cMoonbaseSenderDummy
  327. has
  328.     Time; MaximumTime;
  329.     UseMaximumTime;
  330.     
  331.     Change()
  332.         do
  333.             self.Time := oSetDurationSenderDialog.Time;
  334.             self.MaximumTime := oSetDurationSenderDialog.MaximumTime;
  335.             self.UseMaximumTime := oSetDurationSenderDialog.UseMaximumTime;
  336.             if self.UseMaximumTime then
  337.                 if self.Time > self.MaximumTime then
  338.                     self.Time := oSetDurationSenderDialog.MaximumTime;
  339.                     self.MaximumTime := oSetDurationSenderDialog.Time;
  340.                 end;
  341.             end;
  342.         end;
  343.     
  344.     Execute(theTarget)
  345.         do
  346.             if self.UseMaximumTime then
  347.                 theTarget.Duration := oRANDOM.Value(self.Time, self.MaximumTime);
  348.             else
  349.                 theTarget.Duration := self.Time;
  350.             end;
  351.         end;
  352.     
  353.     GetDialog(theTarget)
  354.         do
  355.             oSetDurationSenderDialog.Time := self.Time;
  356.             oSetDurationSenderDialog.MaximumTime := self.MaximumTime;
  357.             oSetDurationSenderDialog.UseMaximumTime := self.UseMaximumTime;
  358.             result := oSetDurationSenderDialog;
  359.         end;
  360.     
  361.     GetEntry()
  362.         do
  363.             result := oSetDurationSenderEntry;
  364.         end;
  365.     
  366.     GetParameter()
  367.         do
  368.             if self.UseMaximumTime then
  369.                 result := " " + self.Time.ToString() + "-" + self.MaximumTime.ToString();
  370.             else
  371.                 result := " " + self.Time.ToString();
  372.             end;
  373.         end;
  374.  
  375.     Read(theAtomizer)
  376.         external "oSetDurationSenderModelRead";
  377.  
  378.     SaveAsText(theStreamer, theIdentifier)
  379.         do
  380.             if self.UseMaximumTime then
  381.                 theStreamer.Echo(theIdentifier, ".Duration := oRANDOM.Value(", self.Time.ToString(), ", ", self.MaximumTime.ToString(), "); -- Set Duration");
  382.             else
  383.                 theStreamer.Echo(theIdentifier, ".Duration := ", self.Time.ToString(), "; -- Set Duration");
  384.             end;
  385.         end;
  386.     
  387.     Weigh(theAtomizer)
  388.         external "oSetDurationSenderModelWeigh";
  389.     
  390.     Write(theAtomizer)
  391.         external "oSetDurationSenderModelWrite";
  392.  
  393. with
  394.     Time is -1;
  395.     MaximumTime is 0;
  396.     UseMaximumTime is false;
  397. end;
  398.  
  399. object oSetDurationSenderEntry is cSenderEntry
  400. with
  401.     ID is 5393;
  402.     Tag is 'SEDU';
  403. end;
  404.  
  405. object oSetDurationSenderDialog is cAMTDialog
  406. has
  407.     Time; MaximumTime;
  408.     UseMaximumTime;
  409. with
  410.     ID is 5393;
  411.     Items is [
  412.         cAMTTextLabel with end,
  413.         cAMTIntegerField with Field is Time; Range is [-1, 216000]; Tag is 'PTIM'; end,
  414.         cAMTTextLabel with end,
  415.         cAMTCheckBox with Field is UseMaximumTime; Range is [false, true]; Tag is 'PUMA'; end,
  416.         cAMTIntegerField with Field is MaximumTime; Range is [0, 216000]; Tag is 'PMAX'; end,
  417.         cAMTTextLabel with end
  418.     ];
  419.     Time is -1;
  420.     MaximumTime is 0;
  421.     UseMaximumTime is false;
  422. end;
  423.  
  424. --
  425. --    5394    Step by Time sender
  426. --
  427. --                Movie handler
  428. --                Movie Controller handler
  429. --                Flipbook handler
  430. --
  431.  
  432. object oStepByTimeSenderModel is cMoonbaseSenderDummy
  433. has
  434.     Time;
  435.     
  436.     Change()
  437.         do
  438.             self.Time := oStepByTimeSenderDialog.Time;
  439.         end;
  440.     
  441.     Execute(theTarget)
  442.         do
  443.             theTarget.StepBy(self.Time);
  444.         end;
  445.     
  446.     GetDialog(theTarget)
  447.         do
  448.             oStepByTimeSenderDialog.Time := self.Time;
  449.             result := oStepByTimeSenderDialog;
  450.         end;
  451.     
  452.     GetEntry()
  453.         do
  454.             result := oStepByTimeSenderEntry;
  455.         end;
  456.     
  457.     GetParameter()
  458.         do
  459.             result := " " + self.Time.ToString();
  460.         end;
  461.     
  462.     Read(theAtomizer)
  463.         external "oStepByTimeSenderModelRead";
  464.     
  465.     SaveAsText(theStreamer, theIdentifier)
  466.         do
  467.             theStreamer.Echo(theIdentifier, ".StepBy(", self.Time.ToString(), "); -- Step by Time");
  468.         end;
  469.     
  470.     Weigh(theAtomizer)
  471.         external "oStepByTimeSenderModelWeigh";
  472.     
  473.     Write(theAtomizer)
  474.         external "oStepByTimeSenderModelWrite";
  475.     
  476. with
  477.     Time is 0;
  478. end;
  479.  
  480. object oStepByTimeSenderEntry is cSenderEntry
  481. with
  482.     ID is 5394;
  483.     Tag is 'STBY';
  484. end;
  485.  
  486. object oStepByTimeSenderDialog is cAMTDialog
  487. has
  488.     Time;
  489. with
  490.     ID is 5394;
  491.     Items is [
  492.         cAMTTextLabel with end,
  493.         cAMTIntegerField with Field is Time; Range is [-32768, +32768]; Tag is 'PTIM'; end,
  494.         cAMTTextLabel with end
  495.     ];
  496.     Time is 0;
  497. end;
  498.  
  499. --
  500. --    5395    Use Palette of sender
  501. --
  502. --                Picture handler
  503. --                Picture Scroller handler
  504. --                Flipbook handler
  505. --                Button handler
  506. --
  507.  
  508. object oUsePaletteOfSenderModel is cMoonbaseSenderDummy
  509. has
  510.     
  511.     Execute(theTarget)
  512.         do
  513.             theTarget.Supplier.UpdateLoadedData();
  514.         end;
  515.     
  516.     GetEntry()
  517.         do
  518.             result := oUsePaletteOfSenderEntry;
  519.         end;
  520.     
  521.     SaveAsText(theStreamer, theIdentifier)
  522.         do
  523.             theStreamer.Echo(theIdentifier, ".Supplier.UpdateLoadedData(); -- Use Palette of"); 
  524.         end;
  525.     
  526. end;
  527.  
  528. object oUsePaletteOfSenderEntry is cSenderEntry
  529. with
  530.     ID is 5395;
  531.     Tag is 'UPOF';
  532. end;
  533.  
  534. --
  535. --    5396    All Links Merge sender
  536. --
  537. --                container
  538. --
  539.  
  540. object oAllLinksMergeSenderModel is cMoonbaseSenderDummy
  541. has
  542.     
  543.     Execute(theTarget)
  544.         do
  545.             theTarget.Binder.EachUp(Merge, theTarget);
  546.         end;
  547.     
  548.     GetEntry()
  549.         do
  550.             result := oAllLinksMergeSenderEntry;
  551.         end;
  552.     
  553.     SaveAsText(theStreamer, theIdentifier)
  554.         do
  555.             theStreamer.Echo("oBinder.EachUp(Merge, ", theIdentifier, "); -- All Links Merge"); 
  556.         end;
  557.     
  558. end;
  559.  
  560. object oAllLinksMergeSenderEntry is cSenderEntry
  561. with
  562.     ID is 5396;
  563.     Tag is 'ALKM';
  564. end;
  565.  
  566. --
  567. --    5397    Pop Link sender
  568. --
  569. --                binder
  570. --
  571.  
  572. object oPopLinkSenderModel is cMoonbaseSenderDummy
  573. has
  574.     
  575.     Execute(theTarget)
  576.         do
  577.             if theTarget.Count() > 0 then
  578.                 theTarget.Pop();
  579.             end;
  580.         end;
  581.     
  582.     GetEntry()
  583.         do
  584.             result := oPopLinkSenderEntry;
  585.         end;
  586.     
  587.     SaveAsText(theStreamer, theIdentifier)
  588.         do
  589.             --
  590.             -- I had intended this to be a one liner but popping an empty collection
  591.             -- causes serious crash. Normally you would only pop items that you had
  592.             -- pushed onto the stack but in this open environment we can not keep
  593.             -- track of pushes. We now check for one or more items before popping!
  594.             --
  595.             theStreamer.Echo("if ", theIdentifier, ".Count() > 0 then");
  596.             theStreamer.Return(1);
  597.             theStreamer.Echo(theIdentifier, ".Pop(); -- Pop Link");
  598.             theStreamer.Return(-1);
  599.             theStreamer.Echo("end;");
  600.         end;
  601.     
  602. end;
  603.  
  604. object oPopLinkSenderEntry is cSenderEntry
  605. with
  606.     ID is 5397;
  607.     Tag is 'POLK';
  608. end;
  609.  
  610. --
  611. --    5398    Pop All Links sender
  612. --
  613. --                binder
  614. --
  615.  
  616. object oPopAllLinksSenderModel is cMoonbaseSenderDummy
  617. has
  618.     
  619.     Execute(theTarget)
  620.         do
  621.             theTarget.Empty();
  622.         end;
  623.     
  624.     GetEntry()
  625.         do
  626.             result := oPopAllLinksSenderEntry;
  627.         end;
  628.     
  629.     SaveAsText(theStreamer, theIdentifier)
  630.         do
  631.             theStreamer.Echo(theIdentifier, ".Empty(); -- Pop All Links");
  632.         end;
  633.     
  634. end;
  635.  
  636. object oPopAllLinksSenderEntry is cSenderEntry
  637. with
  638.     ID is 5398;
  639.     Tag is 'PALK';
  640. end;
  641.  
  642. --
  643. --    5399    Push Link sender
  644. --
  645. --                container
  646. --
  647.  
  648. object oPushLinkSenderModel is cMoonbaseSenderDummy
  649. has
  650.     
  651.     Execute(theTarget)
  652.         do
  653.             theTarget.Binder.Push(theTarget);
  654.         end;
  655.     
  656.     GetEntry()
  657.         do
  658.             result := oPushLinkSenderEntry;
  659.         end;
  660.     
  661.     SaveAsText(theStreamer, theIdentifier)
  662.         do
  663.             theStreamer.Echo("oBinder.Push(", theIdentifier, "); -- Push Link"); 
  664.         end;
  665.     
  666. end;
  667.  
  668. object oPushLinkSenderEntry is cSenderEntry
  669. with
  670.     ID is 5399;
  671.     Tag is 'PULK';
  672. end;
  673.